#include "Kolejka.h"

Kolejka::Kolejka()
{
     typ = typyKolejki(FIFO);
     zadania.clear();
}

Kolejka::Kolejka(typyKolejki t, int p)
{
   typ = t;
   pojemnosc = p;
   zadania.clear();
}

Kolejka::~Kolejka()
{
}


void Kolejka::wstawZadanie(Zadanie * z)
{
     zadania.push_back(z);
}
Zadanie * Kolejka::getZadanie(int poz)
{
         int l=0;
         if (!zadania.empty())
         {
             for (list<Zadanie*>::iterator it = zadania.begin(); it!= zadania.end(); ++it, l++)
             {
                 if (l == poz)    return *it;
             }
         }
         return NULL;
}

Zadanie * Kolejka::pobierzZadanie()
{
        Zadanie * z = NULL;
        if (!zadania.empty())
        {
            if (typ == typyKolejki(FIFO))
            {
                 z = zadania.front();
                 zadania.pop_front();
            }
            else if (typ == typyKolejki(LIFO))
            {
                 z = zadania.back();
                 zadania.pop_back();
            }
            else if (typ == typyKolejki(RANDOM))
            {
                 int pozycja = rand()%zadania.size();
                 int l = 0;
                 for( list<Zadanie*>::iterator iter=zadania.begin(); iter != zadania.end(); ++iter, l++ )
                 {
                      if (l==pozycja)
                      {        
                         z = *iter;   
                         zadania.remove(z);    
                         break;           
                      }
                 }
            }
        }
        return z;
}

